﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

namespace UI_PMQLThuPhi_LMD
{
    public partial class frmMauHoaDon : DevExpress.XtraEditors.XtraForm
    {
        DataClasses1DataContext dc = new DataClasses1DataContext();
        Boolean saved = true;
        DialogResult result;

        public frmMauHoaDon()
        {
            InitializeComponent();
        }

        private void frmMauHoaDon_Load(object sender, EventArgs e)
        {
            var mhd = dc.GetTable<Mau_Hoa_Don>();
            gcMauHoaDon.DataSource = mhd;
        }

        private void btLuu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                gvMauHoaDon.MoveLast();
                gvMauHoaDon.MoveFirst();
                dc.SubmitChanges();
                //XtraMessageBox.Show("Đã lưu!","Lưu",MessageBoxButtons.OK,MessageBoxIcon.Information);
                saved = true;
                this.Text = this.Text.Substring(0, this.Text.Length - 1);
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Cannot insert duplicate key in object"))
                {
                    saved = true;
                    XtraMessageBox.Show("Có lỗi trong quá trình lưu dữ liệu.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    this.Close();
                }
                else
                {
                    throw;
                }
            }
        }

        private void btXoa_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (gvMauHoaDon.RowCount == 0)
            {
                XtraMessageBox.Show("Không có dữ liệu để xóa.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                result = XtraMessageBox.Show("Bạn có chắc muốn xóa?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
                if (result == DialogResult.Yes)
                {
                    int rowHandles = gvMauHoaDon.FocusedRowHandle;
                    try
                    {
                        Mau_Hoa_Don mhd = (Mau_Hoa_Don)gvMauHoaDon.GetRow(rowHandles);
                        if (mhd.Cap_Phats.Count > 0 || mhd.Nhap_Ves.Count > 0)
                        {
                            XtraMessageBox.Show("Không thể xóa!\nDữ liệu đang được sử dụng.", "Lỗi!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                        }
                        else
                        {
                            //dc.Quan_Huyens.DeleteOnSubmit(qh);
                            gvMauHoaDon.DeleteRow(rowHandles);
                            saved = false;
                            if (this.Text.Substring(this.Text.Length - 1, 1) != "*")
                            {
                                this.Text = this.Text + "*";
                            }
                        }
                    }
                    catch (Exception)
                    {
                        throw;
                    }

                }
            }
        }

        private void frmMauHoaDon_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (saved == false)
            {
                result = XtraMessageBox.Show("Dữ liệu chưa được lưu!\nBạn có muốn lưu không?", "Quận huyện", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

                if (result == System.Windows.Forms.DialogResult.Yes)
                {
                    dc.SubmitChanges();
                }
                else if (result == System.Windows.Forms.DialogResult.Cancel)
                {
                    e.Cancel = true;
                }
            }
        }

        private void gvMauHoaDon_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
        {
            saved = false;
            if (this.Text.Substring(this.Text.Length - 1, 1) != "*")
            {
                this.Text = this.Text + "*";
            }
        }

        private void gvMauHoaDon_DragObjectDrop(object sender, DevExpress.XtraGrid.Views.Base.DragObjectDropEventArgs e)
        {
            if (gvMauHoaDon.GroupCount > 0)
            {
                gvMauHoaDon.OptionsBehavior.Editable = false;
            }
            else
            {
                gvMauHoaDon.OptionsBehavior.Editable = true;
            }
        }

        private void gvMauHoaDon_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e)
        {
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
        }

        private void gvMauHoaDon_InvalidValueException(object sender, DevExpress.XtraEditors.Controls.InvalidValueExceptionEventArgs e)
        {
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.DisplayError;
        }

        private void gvMauHoaDon_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            try
            {
                string MHD_MauSo = (string)gvMauHoaDon.GetRowCellValue(e.RowHandle, colMHD_MauSo);
                if (MHD_MauSo == null)
                {
                    e.Valid = false;
                    gvMauHoaDon.SetColumnError(colMHD_MauSo, "Mẫu không được để trống.");
                }


                string MHD_Ten = (string)gvMauHoaDon.GetRowCellValue(e.RowHandle, colMHD_Ten);
                if (MHD_Ten == null)
                {
                    e.Valid = false;
                    gvMauHoaDon.SetColumnError(colMHD_Ten, "Tên loại hóa đơn không được để trống.");
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        private void gvMauHoaDon_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
        {
            //Mẫu số
            #region
            if (gvMauHoaDon.FocusedColumn == colMHD_MauSo)
            {
                string NewValue = (string)e.Value;
                if (NewValue != null)
                {
                    if (NewValue.Trim() == "")
                    {
                        e.Valid = false;
                        e.ErrorText = "Mẫu không được để trống.";
                    }
                    else
                    {
                        NewValue = NewValue.Trim();
                        if (NewValue.Length > 50)
                        {
                            e.Valid = false;
                            e.ErrorText = "Mã loại có độ dài tối đa là 50 ký tự.";
                        }
                        else
                        {
                            for (int i = 0; i < gvMauHoaDon.RowCount; i++)
                            {
                                string OldValue = (string)gvMauHoaDon.GetRowCellValue(i, colMHD_MauSo);
                                int[] rowHandle = gvMauHoaDon.GetSelectedRows();
                                if (OldValue.ToUpper().Trim() == NewValue.ToUpper() && i != rowHandle[0])
                                {
                                    e.Valid = false;
                                    e.ErrorText = "Mẫu này đã tồn tại.";

                                    break;
                                }
                            }
                        }
                    }
                }
            }
            #endregion

            //Tên loại hóa đơn
            #region
            if (gvMauHoaDon.FocusedColumn == colMHD_Ten)
            {
                string NewValue = (string)e.Value;
                if (NewValue != null)
                {
                    if (NewValue.Trim() == "")
                    {
                        e.Valid = false;
                        e.ErrorText = "Tên loại hóa đơn không được để trống.";
                    }
                    //else
                    //{
                    //    NewValue = NewValue.Trim();

                    //    for (int i = 0; i < gvMauHoaDon.RowCount; i++)
                    //    {
                    //        string OldValue = (string)gvMauHoaDon.GetRowCellValue(i, colMHD_MauSo);
                    //        int[] rowHandle = gvMauHoaDon.GetSelectedRows();
                    //        if (OldValue.ToUpper().Trim() == NewValue.ToUpper() && i != rowHandle[0])
                    //        {
                    //            e.Valid = false;
                    //            e.ErrorText = "Tên loại hóa đơn này đã tồn tại.";

                    //            break;
                    //        }
                    //    }
                    //}
                }
            }
            #endregion
        }

        private void btDong_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            this.Close();
        }

        private void gvMauHoaDon_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
        {
            if (e.Column == colSTT)
            {
                if (e.RowHandle >= 0)
                {
                    e.DisplayText = (e.RowHandle + 1).ToString();
                }
            }
        }




    }
}